DEBUG
이 명령어는 도스에서 실행할 수 있는 파일을 테스트하고 디버깅할 수 있게 하는 프로그램인 디버그를 실행한다.
디버그는 일반 사용자들은 사용하지 않고 프로그램 개발자들에게 도스용 프로그램이 정상적으로 작동되지 않을 때 오류를 찾기 위하여 사용하는 것이다. 따라서 여기서는 디버그에 관한 개략적인 명령어만을 설명하기로 한다. 디버그에 대한 자세한 설명은 다른 참고 도서를 이용하여 익히기 바란다.
■ 명령어 위치
윈도우 시동 디스크로 부팅하면 진단 도구가 들어 있는 램 드라이브에 실행 파일 형태로 존재하는 외부 명령어
윈도우가 설치되어 있는 하드디스크(C:\Windows\Command)에 실행 파일 형태로 존재하는 외부 명령어
■ 사용법
DEBUG [[drive:][path]filename [testfile-para]]
■ 옵션 및 매개변수

[drive:]path | 디버깅할 프로그램의 실행 파일이 있는 위치를 지정한다.
filename | 디버깅할 프로그램의 실행 파일 이름을 지정한다.
testfile-para | 디버깅할 프로그램의 옵션이나 매개변수 등 필요한 정보를 지정한다.

■ 참고 사항
☞ 테스트할 파일을 지정하지 않고 DEBUG 명령어를 실행하기
DEBUG 명령어를 실행할 때 디버깅할 프로그램의 실행 파일을 지정하지 않는다면 모든 디버그 명령어는 디버깅 프롬프트(하이픈(-))에서 디버깅하여야 한다.
☞ 명령어 변수를 분리하기
모든 디버그 명령어는 Q 명령어를 제외하고는 변수를 사용할 수 있다. 사용자는 매개변수를 콤마나 스페이스로 분리할 수 있는데, 이런 분리 문자는 오직 2개의 16진 값들 사이에서만 요구된다. 그러므로 다음에 열거하는 명령어는 같은 의미로 사용된다.
dcs:100 110
d cs:100 110
d,cs:100,110
☞ 적절한 어드레스 지정하기
디버그 명령어 안의 어드레스 변수는 메모리 안의 위치를 지정한다. 어드레스는 알파벳 세그먼트 레지스터나 4자리 숫자 세그먼트 레지스터에 오프셋 값을 더한 것을 포함하는 두 부분을 의미한다.
디버그 명령어에서는 세그먼트 레지스터나 세그먼트 어드레스를 생략할 수 있는데, 디버그 명령어 A, G, L, T, V, W에 대한 디폴트 세그먼트는 CS(Code Segment)이고, 다른 명령어에 대한 디폴트 세그먼트는 DS(Data Segment)이다. 그리고 모든 숫자는 16진수를 디폴트 값으로 한다.
다음의 예는 적절한 어드레스의 예이다. 이 때 세그먼트 이름과 오프셋 값 사이에는 콜론(:)으로 구분되어져야 한다.
CS:0100
04BA:0100
☞ 적절한 범위의 엔트리 정하기
디버그 명령어 안에서 일정한 범위의 매개변수는 메모리의 일정한 범위를 지정한다. 사용자는 이러한 범위에 대하여 2가지 형식으로 지정할 수 있다. 즉, 시작 어드레스와 끝 어드레스, 혹은 시작 어드레스와 그 범위의 길이(L에 의해 표시)의 형식 중에서 선택할 수 있다.
다음의 예는 모두 CS:100에서 시작하는 16바이트의 범위를 지정하고 있는 것이다.
CS:100 10F
CS:100 L 10
☞ DEBUG 명령어
다음은 디버그 명령어의 목록을 나타낸다. 각 명령어에 대한 자세한 설명은 다른 참고 도서를 참조하기 바란다.

? |  | 디버그 명령어의 목록을 보여준다.
A | Assemble | 8086/8087/8088의 기계화 코드로 번역한다.
C | Compare | 메모리의 두 부분을 대조한다.
D | Dump | 메모리의 한 부분의 내용을 보여준다.
E | Enter | 지정된 어드레스에서 시작하는 메모리에 데이터를 넣는다.
F | Fill | 지정된 값으로 메모리를 채운다.
G | Go | 메모리에 있는 실행 가능한 파일을 실행한다.
H | Hexadecimal | 16진 형식으로 연산한다.
I | Input | 지정된 포트에서 1바이트 값을 입력받아 화면에 표시한다.
L | Load | 파일의 내용이나 디스크 섹터를 메모리에 탑재한다.
M | Move | 메모리 한 블럭의 내용을 이동시킨다.
N | Name | 파일을 L이나 W명령어로 지정하거나, 현재 디버깅하고 있는 파일에 대한 매개변수를 지정한다.
O | Output | 1바이트의 값을 출력 포트로 보낸다.
P | Proceed | 루프나 반복적인 문자열의 지시, 소프트웨어의 일시 정지 지시, 혹은 서브루틴을 실행한다.
Q | Quit | 디버깅 작업을 중단한다.
R | Register | 하나 이상의 레지스터 내용을 화면에 표시하거나 변경한다.
S | Search | 하나 이상의 바이트 값으로 지정된 패턴을 가진 메모리 블럭을 검색한다.
T | Trace | 하나의 지시를 실행하고 나서 모든 레지스터의 내용, 모든 플래그의 상태, 그리고 DEBUG가 다음에 실행할 것을 디코더 형태로 화면에 표시한다.
U | Unassemble | 바이트를 해체하고 그에 상응하는 원래 상태를 화면에 표시한다.
W | Write | 디스크를 테스트하면서 디버깅된 데이터를 기록한다.
XA | Allocat eXpanded memory | 중첩 확장 메모리를 할당한다.
XD | Deallocat eXpanded memory | 할당된 중첩 확장 메모리를 원래의 상태로 환원한다.
XM | Map eXpanded memory pages | 할당된 중첩 확장 메모리의 페이지를 맵핑한다.
XS | display eXpanded memory Status | 중첩 확장 메모리 상태를 화면에 보여준다.